﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WMM.Tapioca.Utilities
{
    /// <summary>
    /// This class defines some general constants needed for the application. . 
    /// </summary>
    public static class Constants
    {
        public const string XBRLI = "http://www.xbrl.org/2003/instance";

        public const string XSI = "http://www.w3.org/2001/XMLSchema-instance";

        public const string LINK = "http://www.xbrl.org/2003/linkbase";

        public const string XLINK = "http://www.w3.org/1999/xlink";

        public const string XL = "http://www.xbrl.org/2003/XLink";

        public const string XS = "http://www.w3.org/2001/XMLSchema";

        public const string XBRLDI = "http://xbrl.org/2006/xbrldi";

        public const string XBRLDT = "http://xbrl.org/2005/xbrldt";

        public const string FORMULA = "http://xbrl.org/2008/formula";


        // roles and arcroles 

        public const string XBRLArcroleDomainMember = "http://xbrl.org/int/dim/arcrole/domain-member";

        public const string XBRLArcroleHypercubeDimension = "http://xbrl.org/int/dim/arcrole/hypercube-dimension";

        public const string XBRLArcroleDimensionDomain = "http://xbrl.org/int/dim/arcrole/dimension-domain";

        public const string XBRLArcroleHypercubeAll = "http://xbrl.org/int/dim/arcrole/all";

        public const string XBRLArcroleHypercubeNotAll = "http://xbrl.org/int/dim/arcrole/notAll";

        public const string XBRLRoleLabel = "http://www.xbrl.org/2003/role/label";

        public const string XBRLRoleLabelDocumentation = "http://www.xbrl.org/2003/role/documentation";

        public const string XBRLInstanceLinkbaseArcrole = "http://www.w3.org/1999/xlink/properties/linkbase";

        public const string XBRLSummationItemArcrole = "http://www.xbrl.org/2003/arcrole/summation-item";

        public const string DEFINITIONEssenceAliasArcrole = "http://www.xbrl.org/2003/arcrole/essence-alias";
        
        public const string DEFINITIONGeneralSpecialArcrole = "http://www.xbrl.org/2003/arcrole/general-special";
        
        public const string DEFINITIONSimilarTuplesArcrole = "http://www.xbrl.org/2003/arcrole/similar-tuples";
        
        public const string DEFINITIONRequiresElementArcrole = "http://www.xbrl.org/2003/arcrole/requires-element";
        
        public const string PRESENTATIONParentChildArcrole = "http://www.xbrl.org/2003/arcrole/parent-child";
        
        public const string PRESENTATIONChildParentArcrole = "http://www.xbrl.org/2003/arcrole/child-parent";
        
        public const string DIMENSIONALAggregatorContributorArcrole = "http://xbrl.org/int/dim/arcrole/aggregator-contributor";



        /// <summary>
        /// The URL for the World Wide Web Consortium XML schema definition.
        /// </summary>
        public const string XMLSchemaUrl = "http://www.w3.org/2001/XMLSchema";

        /// <summary>
        /// The XML namespace qualifier for the XML schema namespace.  
        /// See <see cref="XML_SCHEMA_URL"/>.
        /// </summary>
        private const string XmlSchemaPrefix = "xsd";

        /// <summary>
        /// The URL for XBRL International's XBRL linkbase definition namespace.
        /// </summary>
        public const string XBRLLinkbaseUrl = "http://www.xbrl.org/2003/linkbase";

        /// <summary>
        /// The XML namespace qualifier for the XBRL linkbase definition namespace.  
        /// See <see cref="XBRL_LINKBASE_URL"/>.
        /// </summary>
        public const string XBRLLinkbasePrefix = "link";

        /// <summary>
        /// The URL for XBRL International's XBRL instance document definition namespace.
        /// </summary>
        public const string XBRLInstanceUrl = "http://www.xbrl.org/2003/instance";

        /// <summary>
        /// The XML namespace qualifier for the XBRL instance document definition namespace.
        /// See <see cref="XBRL_INSTANCE_URL "/>.
        /// </summary>
        public const string XBRLIPrefix = "xbrli";

        /// <summary>
        /// The XML namespace qualifier for the World Wide Web Consortium XML XLink definition.  
        /// See <see cref="XLINK_URI"/>.
        /// </summary>
        public const string XLINKPrefix = "xlink";

        /// <summary>
        /// The URL for the World Wide Web Consortium XML XLink definition.
        /// </summary>
        public const string XLINKUri = "http://www.w3.org/1999/xlink";

        /// <summary>
        /// The XML namespace qualifier for XBRL International's XBRL dimension namespace.
        /// See <see cref="XBRLDT_URI"/>.
        /// </summary>
        public const string XBRLDTPrefix = "xbrldt";

        /// <summary>
        /// The URL for XBRL International's XBRL dimension namespace.
        /// </summary>
        public const string XBRLDTUri = "http://xbrl.org/2005/xbrldt";

        /// <summary>
        /// The XML namespace qualifier for XBRL International's XBRL dimension namespace.
        /// See <see cref="XBRLDI_URI"/>.
        /// </summary>
        public const string XBRLDIPrefix = "xbrldi";

        /// <summary>
        /// The URL for XBRL International's XBRL dimension namespace.
        /// </summary>
        public const string XBRLDIUri = "http://xbrl.org/2006/xbrldi";

        /// <summary>
        /// The name of the "targetNamespace" attribute that defines the namespace
        /// of elements within a schema.
        /// </summary>
        public const string TARGETNamespace = "targetNamespace";

        internal const string TargetLinkbaseUri = "http://www.xbrl.org/2003/role";
        
        /// <summary>
        /// The URL for the World Wide Web Consortium XML schema instance namespace.
        /// </summary>
        public const string XSIUri = "http://www.w3.org/2001/XMLSchema-instance";

        /// <summary>
        /// The XML namespace qualifier declaring namespaces.
        /// </summary>
        public const string XMLNS = "xmlns";

        /// <summary>
        /// A <see cref="String.Format(String, Object, Object)"/> format string, used for 
        /// creating an element ID consisting of a prefix and an element name.
        /// </summary>
        public const string IDFormat = "{0}_{1}";

        /// <summary>
        /// A <see cref="String.Format(String, Object, Object)"/> format string, generally used for 
        /// creating a XML reference consisting of a namespace prefix and a URL.
        /// </summary>
        public const string NAMEFormat = "{0}:{1}";

        /// <summary>
        /// The name of the element attribute that defines the id of the element.
        /// </summary>
        public const string ID = "id";

    }
}
